home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / prog / atari / m2 / cat3src / cat / mtolga.d < prev    next >
Text File  |  1997-10-26  |  6KB  |  186 lines

  1. DEFINITION MODULE mtOlga;
  2. (****************************************************************************
  3.  *
  4.  * Handling des Olga-Protokolles
  5.  *
  6.  *
  7.  * $Source$
  8.  *
  9.  * $Revision$
  10.  *
  11.  * $Author$
  12.  *
  13.  * $Date$
  14.  *
  15.  * $State$
  16.  *
  17.  *****************************************************************************
  18.  * History:
  19.  *
  20.  * $Log$
  21.  *
  22.  *
  23.  ****************************************************************************)
  24.  
  25. (* Systemabh„ngiges *)
  26. (* IMPLEMENTATION FšR  >>> H„nisch-Modula-2 <<< *)
  27. (*                                                                                            *)
  28. (* Durchgefhrt von Steffen Engel                             *)
  29. (*                                                                                            *)
  30. (*$S-     Stack-Checks                                                        *)
  31. (*$I-     keine Variablen-Initialisierung                 *)
  32. (*$V-     keine arithmetischen Kontrollen                 *)
  33. (*$T-     kein Bereichstest                                             *)
  34. (*$Y-     keine Laufzeittests auf RETURN und CASE *)
  35. (*                                                                                            *)
  36. (*----------------------------------------------*)
  37.  
  38.  
  39.  
  40. IMPORT SYSTEM, System;
  41.  
  42. (* Standard HM2-Libs *)
  43.  
  44. (* Magic-Lib *)
  45. FROM MagicSys     IMPORT
  46.                                 (* Const *) Nil, Null, Bit0, Bit1, Bit2, Bit3, Bit4, Bit5,
  47.                                                         Bit6, Bit7, Bit8, Bit9, Bit10, Bit11, Bit12,
  48.                                                         Bit13, Bit14, Bit15,
  49.                                 (* Type  *) LOC, Byte, ByteSet, sWORD, sINTEGER, sCARDINAL,
  50.                                                         sBITSET, lINTEGER, lCARDINAL, lWORD, lBITSET;
  51.  
  52. (* Magic-Tools *)
  53.  
  54. (* Eigene Libs *)
  55.  
  56. (* Projektlibs *)
  57.  
  58. TYPE
  59.     tProgType     = (Server, Client,    Res2,  Res3,    Res4, Res5, Res6, Res7,
  60.                                  Res8,     Res9,     Res10, Res11, Pipes, Res13, Res14, Res15);
  61.     tsProgType    = SET OF tProgType;
  62.  
  63.  
  64.     tObjType        = (Text, DTP, Editor, Database, Tabcalc, Raster,
  65.                                  Vektor, Graphics, Music, CAD, Comm, Desk, ProgShell);
  66.  
  67.  
  68. (*-----------------------------------------------------------------------
  69.  *
  70.  * OLGA/OLE initialisieren
  71.  * startet OLGA/OLE, wenn nicht vorhanden und meldet sich bei OLGA/OLE an
  72.  * Die Antworten werden erst von Msg verarbeitet
  73.  *
  74.  *-----------------------------------------------------------------------*)
  75. PROCEDURE Init(needOLE : BOOLEAN; progtype : tsProgType; objtype : tObjType);
  76.  
  77. PROCEDURE Exit;
  78.  
  79. TYPE
  80.     tHandlerType    = (cUpdated);
  81.     tHandleProc = RECORD
  82.                                     CASE : tHandlerType OF
  83.                                         |cUpdated : Updated : PROCEDURE(VAR (*$RO*) (* fname *) STRING,
  84.                                                                                                                                 (* index *) sCARDINAL,
  85.                                                                                                                                 (* Group *) sCARDINAL,
  86.                                                                                                                                 (* serverid *) sCARDINAL) : BOOLEAN;
  87.                                         ELSE    proc : PROC;
  88.                                     END;
  89.                                 END;
  90.  
  91. (*-----------------------------------------------------------------------
  92.  *
  93.  * einen Handler installieren
  94.  * Die Liste dieser Handler wird von Msg abgearbeitet. Wird ein passender
  95.  * Handler gefunden, wird dieser aufgerufen.
  96.  * liefert der H„ndler TRUE gilt die Nachricht als verarbeitet, bei FALSE
  97.  * wird nach weiteren Handler des passenen Types gesucht.
  98.  * Damit k”nnen mehrere Handler fr einen Typ installiert werden, die nur
  99.  * die sie betreffenden Teile auswerten.
  100.  * Die Liste wird LIFO bearbeitet, wer als letztes installiert wurde,
  101.  * bekommt als erstes angeboten.
  102.  *
  103.  * Ergebnis TRUE: Handler wurde aufgenommen
  104.  *
  105.  *-----------------------------------------------------------------------*)
  106. PROCEDURE SetHandler(type : tHandlerType; proc : tHandleProc) : BOOLEAN;
  107.  
  108. (*-----------------------------------------------------------------------
  109.  *
  110.  * Einen Handler wieder entfernen
  111.  * Es wird nur ein passender Handler deinstalliert. Damit ist es m”glich, einen
  112.  * Handler mehrfach zu installieren. ei der Deinstallation mssen gleich viele
  113.  * Deinstallationen durchgefhrt werden, wie Installationen, bis der Handler
  114.  * wirklich weg ist.
  115.  *
  116.  *-----------------------------------------------------------------------*)
  117. PROCEDURE RemoveHandler(type : tHandlerType; proc : PROC);
  118.  
  119.  
  120. (*-----------------------------------------------------------------------
  121.  *
  122.  * Ein Dokument wird ge”ffnet
  123.  *
  124.  *-----------------------------------------------------------------------*)
  125. PROCEDURE OpenDoc(GroupId : sCARDINAL);
  126.  
  127.  
  128. (*-----------------------------------------------------------------------
  129.  *
  130.  * Ein Dokument wird geschlossen
  131.  *
  132.  *-----------------------------------------------------------------------*)
  133. PROCEDURE CloseDoc(GroupId : sCARDINAL);
  134.  
  135.  
  136. (*-----------------------------------------------------------------------
  137.  *
  138.  * Ein Dokument sol berwacht werden (Client)
  139.  *
  140.  *-----------------------------------------------------------------------*)
  141. PROCEDURE Link(VAR (*$RO*) name : STRING; GroupId : sCARDINAL);
  142.  
  143.  
  144. (*-----------------------------------------------------------------------
  145.  *
  146.  * Die šberwachung kann beendet werden
  147.  *
  148.  *-----------------------------------------------------------------------*)
  149. PROCEDURE Unlink(VAR (*$RO*) name : STRING; GroupId : sCARDINAL);
  150.  
  151.  
  152.  
  153. (*-----------------------------------------------------------------------
  154.  *
  155.  * Eine Datei wurde gespeichert, Mitteilung an OLGA versenden
  156.  * Der Name darf flchtig sein, zur šbergabe wird eine Kopie erstellt, die
  157.  * automatisch von Msg wieder freigegeben wird.
  158.  *
  159.  *-----------------------------------------------------------------------*)
  160. PROCEDURE Update(VAR (*$RO*) name : STRING);
  161.  
  162. (*------------------------------------------------------------------
  163.  *
  164.  *    Message verarbeiten
  165.  *
  166.  *    Es werden z.Zt. folgende Msgs (aus EvntMulti) verarbeitet:
  167.  *
  168.  *    OLE_NEW
  169.  *    OLGA_INIT
  170.  *    OLGA_UPDATED (an Handler)
  171.  *    OLGA_ACK (von UPDATE, LINK, LINK_RENAMED
  172.  *
  173.  *
  174.  *    RETURN :
  175.  *
  176.  *     TRUE  : Msg wurde verarbeitet
  177.  *     FALSE : Msg geht mich nix an.
  178.  *
  179. (*------------------------------------------------------------------*)
  180. PROCEDURE Msg (VAR (*$RO *)MsgBuffer : ARRAY OF LOC) : BOOLEAN;
  181.  
  182.  
  183.  
  184. END mtOlga.
  185.  
  186.